#ifndef __ARTIST_ELF_H__
#define __ARTIST_ELF_H__
typedef struct struct_elfheader /*52Bytes*/
        {
		/*Magic number and other info.
		low->high:
		1,DEL(0x7F);
		2,E(0x45);
		3,L(0x4C);
		4,F(0x46);
		5,(0)InvalidClass,(1)32-bit object,(2)64-bit object ;
		6,data encoding ,LSB ,MSB;
		7,version;
		8,pad
		*/
           U1B   e_identification[16]; 
		
		   U2B   e_type;/*Object file type .Executable:2*/
		   U2B   e_machine;/*Architecture.3,Intel80386*/
		   U4B   e_version;/*Object file version.*/
		   U4B   e_entry;/*Entry point virtual address */
		   U4B   e_programheaderoffset;/*Program header table file offset.*/
		   U4B   e_sectionheader;/*Section header table file offset */
		   U4B   e_flags;/*Processor-specific flags */
		   
		   U2B   e_elfheadersize;/*ELF header size in bytes */
		   
		   U2B   e_programheaderentrysize;/*Program header table entry size */		   
		   U2B   e_programheadernumber;/*Program header table entry count */
		   
		   U2B   e_sectionheaderentrysize;/*Section header table entry size */
		   U2B   e_sectionheadernumber;/*Section header table entry count */
		   
		   U2B   e_sectionheaderstringindex;/*Section header string table index */
        }ELFHEADER;/**/

typedef struct struct_programheader
        {
            U4B p_type;/* type */            
			U4B p_offset;/*offset in file */
			U4B p_virtualaddress;/*virtual address in memory*/
			U4B p_physicaladdress;/*physical address */
			U4B p_filesize;/* size in file */
			U4B p_memorysize;/* size in memory */
			U4B p_flags;/* flags */
			U4B p_align;/* alignment */
        }PROGRAMHEADER;/**/
#define  ELF_RROGRAMHEADER_LOADABLE_TYPE 1

#endif
